﻿namespace SharpGym.Silverlight
{
    using System.Diagnostics;
    using System.Windows;
    using System.Windows.Controls;
    using SharpService;
    using Views;

    public partial class App
    {
        public static SharpGymContextServiceClient Client;

        public App()
        {
            Startup += Application_Startup;
            UnhandledException += Application_UnhandledException;

            InitializeComponent();
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            RootVisual = new MainPage();
            Client = new SharpGymContextServiceClient();
        }

        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            // If the app is running outside of the debugger then report the exception using
            // a ChildWindow control.
            if (Debugger.IsAttached) return;
            
            // NOTE: This will allow the application to continue running after an exception has been thrown
            // but not handled. 
            // For production applications this error handling should be replaced with something that will 
            // report the error to the website and stop the application.
            e.Handled = true;
            ChildWindow errorWin = new ErrorWindow(e.ExceptionObject);
            errorWin.Show();
        }
    }
}